home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Best of MacTutor - S…e Code for Volumes 1 to 5
/
The Best of MacTutor - Source Code for Volume 1-5 (Wayzata Technology)(6031)(1990).bin
/
Source Code
/
#18 (Mar 87)
/
Basic Graf3D
/
Function Demo
< prev
next >
Wrap
Text File
|
1987-02-09
|
2KB
|
94 lines
' 3D Function Plot
' ©MacTutor 1987
' By Dave Kelly
' Requires CLR Graph3DLib
DIM y!(100,100)
' Be sure to set library volume to your own volume
LIBRARY "XP™ 40-6:Software Dev:MS Basic:CLR Graph3D:Graph3DLib"
LIBRARY "XP™ 40-6:Software Dev:MS Basic:CLR Graph3D:Toolbox"
initialize:
WINDOW 1 'Be sure a window is open!
OpenPort3D 'Set 3D output to window 1
' Next initialize variables to be used in library calls.
x1!=0:x2!=0:y1!=0:y2!=0:zero!=0
xpt!=0:ypt!=0:zpt!=0:z!=0
xAngle!=0:yAngle!=0:zAngle!=0:Angle!=0
SetRect viewrect1%(1),50,50,250,250 'set the viewport rectangle
' convert single precision to fixed point values
Fs2Fix -10!,x1!
Fs2Fix -10!,y1!
Fs2Fix 10!,x2!
Fs2Fix 10!,y2!
Fs2Fix 0!,zero!
Fs2Fix 45!,xAngle!
Fs2Fix 45!,yAngle!
Fs2Fix 0!,zAngle!
Fs2Fix 25!,Angle!
viewport viewrect1%(1)
FRAMERECT (VARPTR(viewrect1%(1)))
SetRect viewrect2%(1),275,50,475,250
LookAt x1!,y1!,x2!,y2!
ViewAngle Angle!
roll zAngle!
yaw yAngle!
Pitch xAngle!
GOSUB Drawaxis
GOSUB Drawing1
viewport viewrect2%(1)
FRAMERECT (VARPTR(viewrect2%(1)))
GOSUB Drawaxis
GOSUB Drawing2
WHILE MOUSE(0)<>1:WEND
END
Drawaxis:
' Draw x axis
moveto3d zero!,zero!,zero!
lineto3d x2!,zero!,zero!
' Draw y axis
moveto3d zero!,zero!,zero!
lineto3d zero!,x2!,zero!
' Draw z axis
moveto3d zero!,zero!,zero!
lineto3d zero!,zero!,x2!
RETURN
Drawing1:
Calculate: ' calulate equation y = SIN(z)
FOR x!=0 TO 10
FOR z=0 TO 10
y!(x,z)=SIN(z)
NEXT z
NEXT x
Plot:
FOR x!=0 TO 10
Fs2Fix x!,xpt!
moveto3d xpt!,zero!,zero!
FOR z!=0 TO 10
Fs2Fix y(x,z),ypt!
Fs2Fix z!,zpt!
lineto3d xpt!,ypt!,zpt!
NEXT
NEXT
RETURN
Drawing2:
Calculate: ' calulate equation y = 9 - (Z^2)
FOR x!=-5 TO 5
FOR z=-5 TO 5
y!(x+5,z+5)=9-(z^2)
NEXT z
NEXT x
Plot:
FOR x!=-5 TO 5
Fs2Fix x!,xpt!
Fs2Fix y!(x+5,0),ypt!
Fs2Fix -5!,zpt!
moveto3d xpt!,ypt!,zpt!
FOR z!=-5 TO 5
Fs2Fix y(x+5,z+5),ypt!
Fs2Fix z!,zpt!
lineto3d xpt!,ypt!,zpt!
NEXT
NEXT
RETURN